#include <stdio.h>

int main(int argc,char *argv[])
{
    int aaa[2][2][2] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
    //第一个下标：第几个二维数组
    //第二个下标：第几个二维数组第几行
    //第三个下标：第几个二维数组第几行第几列

    //printf("%d\n", aaa[1][1][0]);

    //三维数组的作用：首个二维数组的地址；
    //aaa + 1 ：跨16字节
    //*aaa：首个二维数组的首个一维数组的地址；
    //**aaa：首个二维数组的首个一维数组的首元素的地址
    //***aaa：首个二维数组的首个一维数组的首元素的值；
    //&aaa：三维数组的地址
    //*（&aaa）== aaa：对三维数组的地址取值等于首个二维数组的地址

    //*（*（*（aaa + i）+ j）+ k）
    //aaa + i：三维数组中第i+1个二维数组的地址
    //*（aaa + i）：三维数组中第i+1个二维数组的首个一维数组的地址
    //*（aaa + i）+ j：三维数组中第i+1个二维数组的第j+1个一维数组的地址
    //*（*（aaa + i）+ j）：三维数组中第i+1个二维数组的第j+1个一维数组的首元素的地址
    //*（*（aaa + i）+ j）+k：三维数组中第i+1个二维数组的第j+1个一维数组的第k+1个元素的地址
    //*（*（*（aaa + i）+ j）+k）：三维数组中第i+1个二维数组的第j+1个一维数组的第k+1个元素的值
    for(int i = 0; i < 2; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            for(int k = 0; k < 2; k++ )
            //printf("aaa[%d][%d][%d]=%d ",i,j,k,aaa[i][j][k]);
            printf("aaa[%d][%d][%d]=%d\n",i,j,k,*(*(*(aaa + i) + j) + k));
        }
    }
    printf("\n");
    return 0;
}